উদাহরণ সহ Pagination এবং Sorting

Java Technologies - স্প্রিং বুট ওআরএম (Spring Boot ORM) - Pagination এবং Sorting
200

Spring Boot এবং Spring Data JPA সহজেই ডেটাবেসে Pagination (ডেটা পৃষ্ঠায় বিভক্ত) এবং Sorting (ডেটা সাজানো) অপারেশন সাপোর্ট করে। Pagination ডেটা ছোট ছোট অংশে ভাগ করে প্রদর্শন করে, যা পারফরম্যান্স উন্নত করে। Sorting ডেটাকে নির্দিষ্ট ক্রমে সাজিয়ে প্রদর্শন করতে সাহায্য করে।


Pagination এবং Sorting এর জন্য প্রয়োজনীয় ডিপেনডেন্সি

Maven ডিপেনডেন্সি যোগ করুন:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

application.properties ফাইল কনফিগার করুন:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update

Entity ক্লাস তৈরি

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private double price;

    // Getters and Setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}

JpaRepository ইন্টারফেস তৈরি

Spring Data JPA-এর PagingAndSortingRepository বা JpaRepository ইন্টারফেস ব্যবহার করে Pagination এবং Sorting এর সুবিধা পাওয়া যায়।

import org.springframework.data.repository.PagingAndSortingRepository;

public interface ProductRepository extends PagingAndSortingRepository<Product, Long> {
}

Controller ক্লাস তৈরি

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/products")
public class ProductController {

    @Autowired
    private ProductRepository repository;

    // Pagination
    @GetMapping("/paginate")
    public Page<Product> getPaginatedProducts(@RequestParam int page, @RequestParam int size) {
        Pageable pageable = PageRequest.of(page, size);
        return repository.findAll(pageable);
    }

    // Sorting
    @GetMapping("/sort")
    public Iterable<Product> getSortedProducts(@RequestParam String sortBy, @RequestParam String direction) {
        Sort sort = direction.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortBy).ascending() : Sort.by(sortBy).descending();
        return repository.findAll(sort);
    }

    // Pagination with Sorting
    @GetMapping("/paginateAndSort")
    public Page<Product> getPaginatedAndSortedProducts(
            @RequestParam int page,
            @RequestParam int size,
            @RequestParam String sortBy,
            @RequestParam String direction
    ) {
        Sort sort = direction.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortBy).ascending() : Sort.by(sortBy).descending();
        Pageable pageable = PageRequest.of(page, size, sort);
        return repository.findAll(pageable);
    }
}

API সমূহ এবং তাদের ব্যবহার

Pagination API

  • GET: /products/paginate?page=0&size=5
    • প্রথম পৃষ্ঠা (Page 0), প্রতি পৃষ্ঠায় ৫টি আইটেম।

Sorting API

  • GET: /products/sort?sortBy=name&direction=asc
    • name এর উপর ভিত্তি করে Ascending Order
  • GET: /products/sort?sortBy=price&direction=desc
    • price এর উপর ভিত্তি করে Descending Order

Pagination এবং Sorting একত্রে

  • GET: /products/paginateAndSort?page=0&size=5&sortBy=price&direction=asc
    • প্রতি পৃষ্ঠায় ৫টি আইটেম, price এর উপর ভিত্তি করে Ascending Order

উদাহরণ ডেটা

যদি নিচের ডেটাগুলো ডেটাবেসে থাকে:

IDNamePrice
1Product A100.0
2Product B150.0
3Product C120.0
4Product D200.0
5Product E180.0
6Product F170.0

Pagination Query (page=0, size=3):

[
    { "id": 1, "name": "Product A", "price": 100.0 },
    { "id": 2, "name": "Product B", "price": 150.0 },
    { "id": 3, "name": "Product C", "price": 120.0 }
]

Sorting Query (sortBy=price, direction=asc):

[
    { "id": 1, "name": "Product A", "price": 100.0 },
    { "id": 3, "name": "Product C", "price": 120.0 },
    { "id": 2, "name": "Product B", "price": 150.0 },
    ...
]

সারাংশ

Spring Boot এবং Spring Data JPA এর Pagination এবং Sorting ফিচার ডেটা ম্যানেজমেন্টকে আরও কার্যকর ও গতিশীল করে। এর মাধ্যমে বড় ডেটাবেসে কার্যক্ষমতার সাথে ডেটা প্রদর্শন এবং সাজানো যায়। এগুলো সহজে কনফিগার এবং API টেস্টিংয়ের জন্য খুবই সহায়ক।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...